home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1997 February / EnigmA AMIGA RUN 15 (1997)(G.R. Edizioni)(IT)[!][issue 1997-02][PLANET CD V].iso / progs / editor / frexxed / fpl / latex_gotosection.fpl < prev    next >
Text File  |  1995-08-24  |  1KB  |  52 lines

  1. export void LaTeX_GotoSection()
  2. {
  3.   int line = ReadInfo("line");
  4.   int col = ReadInfo("byte_position");
  5.  
  6.   string labels[100];
  7.   int linenum[100];
  8.   string junk;
  9.   int numoflab=0;
  10.   int size=100;
  11.   const string validlabel= "section{|chapter{|part{";
  12.   int moved;
  13.  
  14.   Visible(0);
  15.   GotoLine(1); /* from the start! */
  16.  
  17.   while(!Search(validlabel, "wf+")) {
  18.       linenum [ numoflab ] = ReadInfo("line");
  19.       labels[ numoflab ] = substr( GetLine(ReadInfo("line")),0,(strlen(GetLine(ReadInfo("line")))-1));
  20.       numoflab++;
  21.       if(numoflab == size) {
  22.         /* Filled up the arrays, increase the sizes! */
  23.         size += 100;
  24.         resize labels[size];
  25.         resize linenum[size];
  26.       }
  27.     
  28.   }
  29.   if(numoflab) {
  30.     string selection;
  31.     /* we've found some labels */
  32.     if(RequestWindow("Jump to label",
  33.                      "", "A", &labels, &selection, numoflab) &&
  34.        strlen(selection)) {
  35.       /* We have an OK! */
  36.       int a;
  37.       while(a < numoflab) {
  38.         if(!strcmp(selection, labels[a])) {
  39.           /* this is the label! */
  40.           GotoLine(linenum[a]); /* jump to the label! */
  41.           return;
  42.         }
  43.         a++;
  44.       }
  45.     }
  46.   }
  47.   else
  48.     ReturnStatus("No labels found!");
  49.   if(!moved)
  50.     GotoLine(line, col); // get back to start
  51. }
  52.